8.5.2 型要素による定数の制約
下記のようにジェネリック関数でtype elementを使用することで定数に制約をかけることもできる
code:go
package main
import (
"fmt"
)
type Integer interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64
}
// コンパイル通る
return in + 100 // + 100は全ての整数型で表現可能
}
// コンパイル通らない
return in + 1_000 // + 1_000はint8など一部の整数型で表現不可
}
func main() {
var a int = 10
b := plusOneHundred(a)
fmt.Printf("%T: %v\n", b, b)
}